<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
body {
	width: 800px;
}
</style>
<title>Yaka-JavaEE Cahier des charges</title>
</head>
<body>
	<h1>Yaka - JavaEE Cahier des charges</h1>
	<h2>1 Desiderata du commanditaire</h2>

	<p>Un magasin de meubles désire ouvrir un site de commerce
		électronique qui permet aux internautes de choisir dans le catalogue
		(qui est en ligne) les articles qu'ils peuvent acheter et se faire
		livrer.</p>

	<p>Le magasin a un ensemble conséquent d'articles et propose à ses
		clients de "configurer" certains meubles à souhaits. Pour ces meubles,
		le client a le choix entre une configuration par défaut ou choisir
		lui-même les pièces détachées. S'il choisit une configuration par
		défaut, il lui est cependant toujours possible de modifier cette
		configuration. Il va de soi que la société propose des éléments non
		modulables pour lesquels il y a tout de même un choix restreint de
		possibilités comme par exemple: choisir la couleur, la matière, la
		taille, etc.</p>

	<p>Le client peut visualiser à chaque instant l'état de sa
		commande: article(s), quantité(s), prix.</p>

	<p>Il peut à toujours modifier sa commande (ajouter, retirer des
		articles) jusqu'au moment de "passer à la caisse".</p>

	<p>Les dirigeants du magasin aimeraient aussi disposer d'un outil
		statistique qui leur permettra de connaître les préférences des
		visiteurs (les catégories et sous-catégories les plus demandées par
		les clients, les articles les plus regardés, ...).</p>


	<h2>2 Organisation du site</h2>

	<p>Le labo se divise en deux parties:</p>

	<ol>
		<li>le site web du magasin qui propose la mise en vente de ses
			produits.</li>

		<li>La partie administrative accessible uniquement avec un compte
			ayant les droits suffisants.</li>
	</ol>


	<h3>2.1 Le site web</h3>

	<p>Les pages seront présentées dans un premier temps uniquement en
		français mais une version multilingue est à prévoir.</p>

	<p>A tout moment, le client aura la possibilité de s'identifier
		dans le système ou de créer un compte. Cette manière permet de
		conserver les informations de signalétique de chaque client dans le
		sytème.</p>

	<h4>2.1.1 Présentation des catégories et des produits</h4>

	<p>Les catégories principales de produits doivent être proposées
		aux clients et permettront l'accès aux sous-catégories et aux pro-
		duits.</p>

	<p>Les informations minimales d'un produit qui devront être
		affichées sont les suivantes:</p>

	<ul>
		<li>mention de l'image vignette</li>
		<li>description du produit (description simple)</li>
		<li>prix (TVAC ou HTVA selon le profil du client, en Euro): si
			plusieurs options sont possibles, le prix minimum sera repris avec la
			mention "à partir de :". Si l'utilisateur n'est pas loggué, les prix
			TVAC seront préférés.</li>
	</ul>

	<p>Le client aura également la possibilité de demander une
		description détaillée d'un produit, laquelle sera constituée d'une
		image et d'une description longue.</p>

	<p>Le site mettra également en oeuvre un mécanisme de trace afin
		d'obtenir des informations statistiques sur les catégories et les
		produits visualisés par les clients.</p>

	<p>Sur la page d'accueil, un certain nombre de produits marqués
		comme promotionnels par l'administrateur seront présentés
		aléatoirement.</p>

	<p>Si une catégorie ne contient pas de produit mais seulement des
		sous-catégories (filles), ce sont les produits marqués comme
		promotionels dans ces sous-catégories, qui seront affichés de manière
		aléatoire s'il y en a.</p>

	<h4>2.1.2 Configuration des produits</h4>

	<p>Une fois un produit sélectionné par le client (et avant de
		l'ajouter au panier à provision), le client a la possibilité de
		configurer le produit.</p>

	<p>En effet, la plupart des articles mis en vente par le magasin
		disposent de différentes propriétés configurables (comme la hauteur,la
		largeur,le revêtement par exemple).</p>

	<p>Dans le cas d'un article configurable composé de pièces
		détachées, l'interface proposera de configurer le produit principal et
		les produits secondaires.</p>

	<p>Que le produit soit simple ou composé, le client devra également
		spécifier la quantité voulue.</p>

	<h4>2.1.3 Panier à provision</h4>

	<p>Mise en place d'un panier à provision (côté serveur) où le
		client pourra ajouter, supprimer, modifier les produits sélectionnés.</p>

	<p>A tout moment, le client peut voir et modifier l'état de son
		panier.</p>

	<h4>2.1.4 La commande</h4>

	<p>Une fois le client satisfait, l'utilisateur aura la possibilité
		de passer sa commande.</p>

	<p>L'identification est nécessaire pour passer commande. Cependant,
		si un client ne s'est pas identifié et lance la procédure de commande,
		il sera redirigé vers les pages d'identification/création de compte.</p>

	<p>La procédure de commande consiste à enregistrer dans le système
		la commande de manière à ce que depuis un back-office les employés du
		magasin puissent traiter cette commande.</p>

	<p>La commande pourra pendre différents statuts: en attente de
		paiement (waiting), en traitement (in treatment), traitée (treated),
		rejetée (rejected). Dans le cas où la commande passe en statut
		rejetée, il y aura possibilité de laisser un commentaire pour préciser
		la raison du refus.</p>

	<p>Différents mode de paiement devront être envisagés: paiement
		différé (par virement) ou paiement direct par carte de crédit. Dans
		tout les cas, un web service sécurisé devra permettre à un tiers
		(banque) de signaler à votre système qu'une commande peut passer de
		l'état "waiting" à "in treatment" ou "rejected" grâce à une référence
		de commande.</p>


	<h2>3 Partie administrative</h2>

	<p>En utilisant le système d'identification du site commercial, si
		un utilisateur possédant les droits d'administration est détecté,
		celui-ci sera redirigé vers les pages d'administration.</p>

	<p>
		En tant qu'<em>administrateur</em>, celui-ci pourra réaliser diverses
		actions:
	</p>

	<ul>
		<li>ajouter,supprimer ou modifier des catégories</li>
		<li>ajouter,supprimer ou modifier des produits</li>
		<li>définir l'état promotionnel de l'un ou l'autre produit</li>
		<li>obtenir les statistiques sur les catégories et les produits</li>
		<li>voir la liste des commandes (il pourra filtré les commandes
			pour ne voir que celles qui sont dans un statut particulier)</li>
		<li>modifier une commande (état et contenu)</li>
	</ul>

	<p>
		Certains comptes auront un accès restreint aux fonctionnalités de
		d'administration. Un type de compte <em>magasinier</em> pourra:
	</p>
	<ul>
		<li>voir la liste des commandes "in treatment" et "treated"
			uniquement</li>
		<li>modifier le statut d'une de ces commandes de l'un à l'autre
			statut</li>
	</ul>

	<p>
		Un type de compte <em>marketing</em> pourra:
	</p>
	<ul>
		<li>obtenir les statistiques sur les catégories et les produits.</li>
	</ul>

	<p>
		Un type de compte <em>webmaster</em> pourra:
	</p>
	<ul>
		<li>ajouter,supprimer ou modifier des catégories</li>
		<li>ajouter,supprimer des produits</li>
		<li>définir l'état promotionnel d'un ou l'autre produit</li>
	</ul>

</body>
</html>